package 线程.综合练习.抢红包;

import java.util.Random;

public class MyMonth extends Thread {
    //定义一个变量表示总金额
    static double money=100;

    //定义一个变量表示红包的个数
    static int count=3;

    //设置红包的最小子,抢到的红包低于这个数目
    static final double min=0.1;

    @Override
    public void run() {
        synchronized (MyMonth.class){
            //判断红包是否抢完
            if (count==0){
                //红包被抢完了,则后面的人都无法签到红包
                System.out.println(getName()+",没有抢到红包");
            }else {
                //定义一个变量表示抢到的红包
                double prize=0;
                if (count==1){
                    //此时是最后的一个红包,因为是最后一个,所以剩下的都在这个红包中.
                    prize=money;
                }else{
                    //表示此时是第1,2个红包
                    Random ra=new Random();
                    //随机金额,随机的金额可能是100也可能是枪了第一个红包之后的红包
                    double v = money - (count - 1) * min;
                    prize=ra.nextDouble(v);
                    if (prize<min){
                        prize=min;
                    }
                }
                //从红包中减去对应的金额
                money-=prize;
                //红包的个数
                count--;
                //打印抢红包的具体信息
                System.out.println(getName()+",抢到了"+prize+"元");

            }
        }
    }
}
